package com.drerp.autenticacao;

import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.drerp.RH.Colaborador;
import com.drerp.RH.Usuario;
import com.drerp.RH.DAO.ColaboradorDAO;
import com.drerp.util.Constantes;

public class AutenticacaoServlet extends HttpServlet {
	private static final long serialVersionUID = -5756734505509270939L;
	
	private static final String CAMPO_USERNAME = "username";
	private static final String CAMPO_SENHA = "password";
	
    public AutenticacaoServlet() {
        super();
    }

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		Usuario usuario = (Usuario) session.getAttribute(Constantes.USER_SESSION_KEY);
		String login = null;
		String senha = null;
		
		System.out.println(usuario);
		
		if (usuario == null) {
			login = request.getParameter(CAMPO_USERNAME);
			senha = request.getParameter(CAMPO_SENHA);
			
			usuario = Usuario.encontrarUsuarioPorLogin(login);
			
			
		
			if (usuario == null || senha == null || (senha != null && !usuario.getSenha().equals(senha))) {
				
				session.setAttribute(Constantes.ERROR_MSG_SESSION_KEY, "Usuário ou senha incorreto.");
				response.sendRedirect(Constantes.LOGIN_URL);
				return;
				
			} else if (usuario.getSenha().equals(senha)) {
				session.setAttribute(Constantes.USER_SESSION_KEY, usuario);
				
				//String url = (String) session.getAttribute(Constantes.URL_DEST_SESSION_KEY);
				String url = Constantes.HOME;
				
				if (url == null) {
					url = Constantes.HOME;
				}
				
				if (usuario instanceof Colaborador) {
					((Colaborador) usuario).setUltimoAcesso(new GregorianCalendar());
					((Colaborador) usuario).salvarMudancas();
				}
				
				response.sendRedirect(url);
				return;
			}
		} else {
			response.sendRedirect(Constantes.HOME);
			return;
		}
		
	}
}
